#!/bin/bash

show_help() {
    echo "RSS 论文更新程序启动脚本"
    echo ""
    echo "用法: ./sa.sh [选项] [-- python参数...]"
    echo ""
    echo "通用选项:"
    echo "  -e, --env <目录>         指定 Python 虚拟环境目录（默认: rss_client_venv）"
    echo "  -h, --help               显示此帮助信息"
    echo ""
    echo "Python 程序支持的参数（rss_client.py）:"
    echo "  -c, --config <文件>      指定配置文件路径（默认: config.yml）"
    echo "  -m, --mode <模式>        运行模式，选项包括:"
    echo "                             debug, production, register, daemon,"
    echo "                             stop, kill, install, update"
    echo ""
    echo "  -d                       快捷方式，等同于 --mode daemon"
    echo "  -i                       快捷方式，等同于 --mode install"
    echo "  -s                       快捷方式，等同于 --mode stop"
    echo "  -u                       快捷方式，等同于 --mode update"
    echo ""
    echo "  --pid <PID>              指定要终止的进程 PID（仅 kill 模式）"
    echo "  --pidfile <文件路径>     指定要终止的进程 PID 文件路径（仅 kill 模式）"
    echo "  -r, --requirements_file  指定 requirements.txt 路径（仅 install 模式，默认: requirements.txt）"
    echo ""
    echo "示例:"
    echo "  ./sa.sh -m debug"
    echo "  ./sa.sh -e myenv -d -c my_config.yml"
    echo "  ./sa.sh --mode install -r custom_requirements.txt"
}



# 默认虚拟环境目录
VENV_DIR="rss_client_venv"
PYTHON_ARGS=()

# 解析脚本参数
while [[ $# -gt 0 ]]; do
    case "$1" in
        -e|--env)
            shift
            if [[ -z "$1" ]]; then
                echo "❌ 错误：-e/--env 参数需要一个路径"
                exit 1
            fi
            VENV_DIR="$1"
            shift
            ;;
        -h|--help)
            show_help
            exit 0
            ;;
        *)
            PYTHON_ARGS+=("$1")
            shift
            ;;
    esac
done

# 检查是否是 Git 仓库
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
    echo "✅ 检测到 Git 仓库，执行 git config core.filemode false"
    git config core.filemode false
fi

# 检查虚拟环境是否存在
if [ ! -d "$VENV_DIR" ]; then
    echo "❌ 未找到虚拟环境目录 '$VENV_DIR'"
    echo "请先运行：./sa.sh -i 初始化虚拟环境，或使用 -e 指定其他路径"
    exit 1
fi

# 检查 python3 是否可执行
PYTHON_EXEC="$VENV_DIR/bin/python3"
if [ ! -x "$PYTHON_EXEC" ]; then
    echo "❌ 虚拟环境中的 python3 不存在或不可执行：$PYTHON_EXEC"
    exit 1
fi

# 激活虚拟环境
source "$VENV_DIR/bin/activate"

# 运行 Python 脚本
$PYTHON_EXEC rss_client.py "${PYTHON_ARGS[@]}"
status=$?

# 退出虚拟环境
deactivate

exit $status
